package www.worq.model.dao;

import java.sql.SQLException;
import java.util.ArrayList;

import www.worq.controller.beans.certificadoBean;

public class certificadosDao extends oreqDao {

	public ArrayList<certificadoBean> getCERTIFICADOS() throws SQLException {
		ArrayList<certificadoBean> certificados = new ArrayList<certificadoBean>();
		try {
			StringBuilder query = new StringBuilder();
			query.append("select * from oreq.certificado where id_recibo in (SELECT id_recibo FROM oreq.recibo where status='CERTIFICACION') order by id_certificado");
			conn = this.getConnectionMYSQL();
			ps = conn.prepareStatement(query.toString());
			rs = ps.executeQuery();
			System.out
					.println("dao.certificados.getCERTIFICADOS.Ejecutado----------> "
							+ query.toString());

			while (rs.next()) {
				certificadoBean certificado = new certificadoBean();
				certificado.setId_certificado(rs.getInt(1));
				certificado.setId_recibo(rs.getInt(2));
				certificado.setMatricula(rs.getString(3));
				certificado.setFecha_insc(rs.getString(4));
				certificado.setActo_juridico(rs.getString(5));
				certificado.setOtros(rs.getString(6));
				certificado.setAnotacion(rs.getString(7));
				certificados.add(certificado);
			}
			System.out
					.println("dao.certificados.getCERTIFICADOS----------> Cargado");
		} catch (Exception e) {
			System.out.println("certificadosDao...Error..." + e.getMessage());
		} finally {
			close(conn);
			close(ps);
			close(rs);
		}
		return certificados;
	}
	public ArrayList<certificadoBean> getENTREGADOS() throws SQLException {
		ArrayList<certificadoBean> certificados = new ArrayList<certificadoBean>();
		try {
			StringBuilder query = new StringBuilder();
			query.append("select * from oreq.certificado where id_recibo in (SELECT id_recibo FROM oreq.recibo where status='C-APROVACION') order by id_certificado");
			conn = this.getConnectionMYSQL();
			ps = conn.prepareStatement(query.toString());
			rs = ps.executeQuery();
			System.out
					.println("dao.certificados.getCERTIFICADOS.Ejecutado----------> "
							+ query.toString());

			while (rs.next()) {
				certificadoBean certificado = new certificadoBean();
				certificado.setId_certificado(rs.getInt(1));
				certificado.setId_recibo(rs.getInt(2));
				certificado.setMatricula(rs.getString(3));
				certificado.setFecha_insc(rs.getString(4));
				certificado.setActo_juridico(rs.getString(5));
				certificado.setOtros(rs.getString(6));
				certificado.setAnotacion(rs.getString(7));
				certificados.add(certificado);
			}
			System.out
					.println("dao.certificados.getCERTIFICADOS----------> Cargado");
		} catch (Exception e) {
			System.out.println("certificadosDao...Error..." + e.getMessage());
		} finally {
			close(conn);
			close(ps);
			close(rs);
		}
		return certificados;
	}
	
	public void getCERTIFICADO(certificadoBean certificado) throws SQLException {
		try {
			StringBuilder query = new StringBuilder();
			query.append("select * from certificado where id_recibo='").append(certificado.getId_recibo()).append("'");
			conn = this.getConnectionMYSQL();
			ps = conn.prepareStatement(query.toString());
			rs = ps.executeQuery();
			System.out
					.println("dao.certificados.getCERTIFICADOS.Ejecutado----------> "
							+ query.toString());

			while (rs.next()) {
				certificado.setId_certificado(rs.getInt(1));
				System.out.println(certificado.getId_certificado());
				certificado.setId_recibo(rs.getInt(2));
				certificado.setMatricula(rs.getString(3));
				certificado.setFecha_insc(rs.getString(4));
				certificado.setActo_juridico(rs.getString(5));
				certificado.setOtros(rs.getString(6));
				certificado.setAnotacion(rs.getString(7));
			}
			System.out
					.println("dao.certificados.getCERTIFICADOS----------> Cargado");
		} catch (Exception e) {
			System.out.println("certificadosDao...Error..." + e.getMessage());
		} finally {
			close(conn);
			close(ps);
			close(rs);
		}
	}

	public int nextId() {
		int id = 0;
		try {
			StringBuilder query = new StringBuilder();
			query.append("Select id_certificado from certificado");
			conn = this.getConnectionMYSQL();
			ps = conn.prepareStatement(query.toString());
			rs = ps.executeQuery();
			System.out.println("dao.certificados.nextId.Ejecutado----------> "
					+ query.toString());

			while (rs.next()) {
				if (id < rs.getInt(1)) {
					id = rs.getInt(1);
				}
			}
			System.out.println("dao.usuarios.nextId----------> Cargado");
		} catch (Exception e) {
			System.out.println("usuariosDao...Error..." + e.getMessage());
		} finally {
			close(conn);
			close(ps);
			close(rs);
		}
		return id + 1;
	}

	public void insertCERTIFICADO(certificadoBean bean) throws Exception {
		try {
			StringBuilder query = new StringBuilder();
			conn = this.getConnectionMYSQL();

			query.append("INSERT INTO certificado ")
					.append("(id_certificado, id_recibo, matricula, fecha_insc, acto_juridico, otros, anotacion) ")
					.append("values ('").append(bean.getId_certificado())
					.append("','").append(bean.getId_recibo()).append("','")
					.append(bean.getMatricula()).append("','")
					.append(bean.getFecha_insc()).append("','")
					.append(bean.getActo_juridico()).append("','")
					.append(bean.getOtros()).append("','")
					.append(bean.getAnotacion()).append("');");
			System.out
					.println("dao.certificados.insertCERTIFICADO.Ejecutado----------> "
							+ query.toString());
			st = conn.createStatement();
			st.executeUpdate(query.toString());

			System.out
					.println("dao.certificados.insertCERTIFICADO----------> insertado");

		} catch (SQLException error) {
			throw new Exception(error.getMessage());
		} catch (Exception error) {
			throw new Exception(error.getMessage());
		} finally {
			close(conn);
			close(st);
		}
	}

	public void deleteCERTIFICADO(certificadoBean bean) throws Exception {
		try {
			StringBuilder query = new StringBuilder();
			conn = this.getConnectionMYSQL();

			query.append("DELETE FROM certificado where id_certificado=")
					.append(bean.getId_certificado());

			st = conn.createStatement();
			st.executeUpdate(query.toString());
			System.out
					.println("dao.certificados.deleteCERTIFICADO.Ejecutado----------> "
							+ query.toString());
			System.out
					.println("dao.certificados.deleteCERTIFICADO----------> eliminado");

		} catch (SQLException error) {
			throw new Exception(error.getMessage());
		} catch (Exception error) {
			throw new Exception(error.getMessage());
		} finally {
			close(conn);
			close(st);
		}
	}

	public void updateCERTIFICADO(certificadoBean bean) throws Exception {
		try {
			StringBuilder query = new StringBuilder();
			conn = this.getConnectionMYSQL();

			query.append("UPDATE certificado SET ")
			.append("fecha_insc='")
					.append(bean.getFecha_insc())
					.append("',acto_juridico='")
					.append(bean.getActo_juridico())
					.append("',otros='")
					.append(bean.getOtros())
					.append("',anotacion='")
					.append(bean.getAnotacion())
					.append("' where id_certificado='")
					.append(bean.getId_certificado()).append("';");

			st = conn.createStatement();
			st.executeUpdate(query.toString());
			System.out
					.println("dao.certificados.updateCERTIFICADO.Ejecutado----------> "
							+ query.toString());
			System.out
					.println("dao.certificados.updateCERTIFICADO----------> actualizado");

		} catch (SQLException error) {
			throw new Exception(error.getMessage());
		} catch (Exception error) {
			throw new Exception(error.getMessage());
		} finally {
			close(conn);
			close(st);
		}
	}
}
